'''
本模块是在线查询天气项目的一部分，
主要用于加载自带的城市代号json文件并提供查询服务
'''

import json

CODE = 'city_code'
NAME = 'city_name'

def load_json():
    #不考虑找不到文件的情况；在主文件中通过捕获本模块导入时的异常解决
    global DATA
    with open('city.json','r',encoding='utf-8') as f:
        DATA = json.load(f)
        f.close()


def name_code(name,partial=False):
    '''使用城市名查询编码
    返回值为一个字典，键为城市名，值为城市代号(如该行政区没有代号为空值）
    如启用partial,则包含输入的name的城市代号都会被返回
    如无结果，返回空字典
    '''
    try:
        DATA
    except NameError:
        load_json()
        return name_code(name,partial)
    
    result = {}
    for one in DATA:
        city = one[NAME]
        if city == name:
            result[city] = one[CODE]
        elif name in city and partial:
            result[city] = one[CODE]

    return result
